package designpattern.create.single;

/**
 * Created by cuihao on 2017/10/23.
 * 静态内部类
 */
public class InnerClassSingleton {
    private InnerClassSingleton() {
    }

    public static final InnerClassSingleton getInstance() {
        return SingletonHolder.INSTANCE;
    }

    private static class SingletonHolder {
        // INSTANCE 在SingletonHolder加载后不会实例化,只有类SingletonHolder初始化才能创建
        // 类的初始化只能执行一次（加载 -> 链接（验证 准备0 false 解析） -> 初始化(静态变量 静态代码块)）
        // 此处SingletonHolder初始化的条件就是 INSTANCE 被getInstance方法访问，所以此处也实现了延迟加载
        private static final InnerClassSingleton INSTANCE = new InnerClassSingleton();
    }
}